package com.ruoyi.employee.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.employee.domain.HrContract;

/**
 * 合同管理Service接口
 *
 * @author hango
 * @date 2025-10-19
 */
public interface IHrContractService
{
    /**
     * 查询合同管理
     *
     * @param id 合同管理主键
     * @return 合同管理
     */
    public HrContract selectHrContractById(Long id);

    /**
     * 查询合同管理列表
     *
     * @param hrContract 合同管理
     * @return 合同管理集合
     */
    public List<HrContract> selectHrContractList(HrContract hrContract);

    /**
     * 查询合同管理列表（联表：员工/公司/部门/岗位）
     *
     * @param hrContract 合同管理（作为查询条件）
     * @return 列表数据集合（包含 empNo、empName、companyName、deptName、postName、termText 等展示字段）
     */
    public List<Map<String, Object>> selectHrContractListWithJoin(HrContract hrContract);

    /**
     * 查询合同管理（联表详情）
     *
     * @param id 合同管理主键
     * @return 详情数据（包含员工与组织信息、期限文案等展示字段）
     */
    public Map<String, Object> selectHrContractByIdWithJoin(Long id);

    /**
     * 新增合同管理
     *
     * @param hrContract 合同管理
     * @return 结果
     */
    public int insertHrContract(HrContract hrContract);

    /**
     * 修改合同管理
     *
     * @param hrContract 合同管理
     * @return 结果
     */
    public int updateHrContract(HrContract hrContract);

    /**
     * 批量删除合同管理
     *
     * @param ids 需要删除的合同管理主键集合
     * @return 结果
     */
    public int deleteHrContractByIds(Long[] ids);

    /**
     * 删除合同管理信息
     *
     * @param id 合同管理主键
     * @return 结果
     */
    public int deleteHrContractById(Long id);
}
